#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#include <numeric>
#include <vector>
#include <ext/hash_map>
#include <iterator>
#include <functional>
#include <boost/bind.hpp>
#include <boost/timer.hpp>
#include <boost/shared_ptr.hpp>

using namespace std;
using namespace __gnu_cxx;

struct HashCode
:public unary_function<string,int>
{
	int operator()(string s)
	{
		__gnu_cxx::hash<const char*> hasher;
		return hasher( s.c_str() );
	}
};

struct KeyEqual
:public binary_function<string,string,bool>
{
	bool operator()(string s1,string s2)
	{
		return s1==s2;
	}
};

int main(int argc, char** argv)
{
	if(argc == 1)
	{
	    cout<<"cmd file"<<endl;
	    exit(1);
	}

	typedef hash_map<string,int,HashCode,KeyEqual> HMAP;
	HMAP map;
     
	ifstream file(argv[1]);
	istream_iterator<string> in(file),endf;

	while(in != endf)
	{
		HMAP::iterator pos;
//		pos = map.find("AA");
		++in;
	}
	return 0;
}
